#pragma once

#include <vector>
using namespace std;
struct Point {
    Point() { x = y = -1; }
    Point(int _x, int _y) {
        x = _x;
        y = _y;
    }
    int x;
    int y;
};

struct Line {
    Line(Point _start, Point _end) : start(_start), end(_end), next(nullptr) {}
    Point start;
    Point end;
    int type;
    /*
    对于type来讲
    只找: 活五 眠五 活四 眠四 活三 朦胧三     眠三  活二  眠二
    下标: A5   B5   A4   B4   A3   B3     C3   A2   B2
    编号: 51   52   41   42   31   32     33   21   22
    */
    Line* next;
};

// 用来存储某个时刻棋盘上面的情况
// struct Situation {
//     // 15x15 0~14
//     Line* linearray[15]{nullptr};
//     Line* columnarray[15]{nullptr};
//
//     // ↙↗
//     // 5~23
//     Line* secd_diag_array[19]{nullptr};
//
//     // ↖↘
//     // 5~23
//     Line* main_diag_array[19]{nullptr};
// };
//
struct Situation {
    // 15x15
    // XSituation[0] => x=0
    int XSituation[15]{0};
    // YSituation[0]=> y=0
    int YSituation[15]{0};
    // ↖↘
    int main_diag_array[19]{0};
    // ↙↗
    int secd_diag_array[19]{0};
};
